package IO流.字符流与字节流练习;

import java.io.*;

public class 拷贝文件夹 {
    public static void main(String[] args) throws IOException {
        //1.创建要拷贝的文件夹对象
        File F=new File("D:\\F");

        //2.创建拷贝的的文件夹目的地
        File A=new File("D:\\A");

        //3.调用方法进行拷贝
        copydir(F,A);
    }
    //创建一个方法用于拷贝文件夹
    private static void copydir(File f, File a) throws IOException {
        //如果拷贝到的目的文件文件夹要是不存在就进行创建这个文件夹
        a.mkdirs();
        //1.获取文件的内容
        File[] arrF = f.listFiles();
        //2.遍历内容
        for (File file : arrF) {
            //如果是文件
            if (file.isFile()){
                //创建字节输入流和输出流对象
                FileInputStream fis=new FileInputStream(file);
                //写入的是文件而不是文件夹
                FileOutputStream fos=new FileOutputStream(new File(a,file.getName()));
                byte[] bytes=new byte[1024*1024*5];
                int len;
                while ((len= fis.read(bytes))!=-1){
                    fos.write(bytes,0,len);
                }
                fos.close();
                fis.close();
            }else {
                //是文件夹-->递归
                copydir(file,new File(a,file.getName()));
            }
        }
    }
}
